package com.gae.client;

import java.util.ArrayList;
import java.util.List;
import com.gae.shared.Utilisateur;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.cellview.client.CellTable;
import com.google.gwt.user.cellview.client.TextColumn;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.FlowPanel;

public class IhmListeUtilisateurs extends FlowPanel {
	
	private final GreetingServiceAsync greetingService = GWT.create(GreetingService.class);
	private List<Utilisateur> liste = new ArrayList<Utilisateur>();
	private CellTable<Utilisateur> table = new CellTable<Utilisateur>();
	
	final AsyncCallback<List<Utilisateur>> callback = new AsyncCallback<List<Utilisateur>>() {

        @Override
        public void onSuccess(List<Utilisateur> result) {
			liste = result;
			
			TextColumn<Utilisateur> colNom = new TextColumn<Utilisateur>() {
			  public String getValue(Utilisateur object) {
			    return object.getNom();
			  }
			};
			table.addColumn(colNom, "Nom");
			
			TextColumn<Utilisateur> colPrenom = new TextColumn<Utilisateur>() {
			  public String getValue(Utilisateur object) {
			    return object.getPrenom();
			  }
			};
			table.addColumn(colPrenom, "Prenom");
			
			TextColumn<Utilisateur> colLogin = new TextColumn<Utilisateur>() {
			  public String getValue(Utilisateur object) {
			    return object.getLogin();
			  }
			};
			table.addColumn(colLogin, "Login");
			
			TextColumn<Utilisateur> colMail = new TextColumn<Utilisateur>() {
			  public String getValue(Utilisateur object) {
			    return object.getEmail();
			  }
			};
			table.addColumn(colMail, "Mail");
			
			TextColumn<Utilisateur> colMdp = new TextColumn<Utilisateur>() {
			  public String getValue(Utilisateur object) {
			    return object.getMotDePasse();
			  }
			};
			table.addColumn(colMdp, "Mdp");
			
			TextColumn<Utilisateur> colCompte = new TextColumn<Utilisateur>() {
			  public String getValue(Utilisateur object) {
			    return Double.toString(object.getCompte().getMontant());
			  }
			};
			table.addColumn(colCompte, "Compte");
			    
				
			table.setRowCount(liste.size(), true);
			table.setRowData(0, liste);
			          
			add(table);
        }

        @Override
        public void onFailure(Throwable caught) {
        }
    };
	
	public IhmListeUtilisateurs(){
		greetingService.getAllUtilisateurs(callback);
	}

}
